Hart Rhombus Linkage

To move the linkage manually move the BLUE point.  To automate the movement give the Speed slider a non-zero value. If this fails to work (which can happen after clicking the  reset icon) then right-click on the BLUE point and select "Animation on" or alternatively just reload the page.

Frame DImensions

Animation Speed

Locus

BasePoint_1 = Intersect(xAxis, yAxis)
ω = 2.34 (slider from 2 * Δω to 20, step 0.1)
h_1 = 1.6 (slider from Δω to 20, step 0.1)
h_2 = 1.6 (slider from Δω to 20, step 0.1)
B: (0, h_1)
C: (ω, h_2)
BasePoint_2: (ω, 0)
Δω = 0.199 (slider from 0 to 2, step 0.01)
P_1: (-Δω, h_1)
P_2: (-Δω, -Δω)
P_3: (ω + Δω, -Δω)
P_4: (ω + Δω, h_2)
P_5: (ω - Δω, h_2)
P_6: (ω - Δω, Δω)
P_7: (Δω, Δω)
P_8: (Δω, h_1)
C_1: (0, h_1 + Δω)
C_2: (ω, h_2 + Δω)
poly1, p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8 = Polygon(P_1, P_2, P_3, P_4, P_5, P_6, P_7, P_8)
c = CircumcircleArc(P_8, C_1, P_1)
d = CircumcircleArc(P_4, C_2, P_5)
A = (-3.92, 6.02)
D = (-1.26, 6.02)
E = (-1.26, 2.36)
F = (-3.92, 2.36)
poly2, a_1, d_1, e, f = Polygon(A, D, E, F)
a = 1.2 (slider from 0 to 5, step 0.1)
Speed = 0 (slider from -10 to 10, step 0.1)
A_1 = (-3.92, 2.22)
D_1 = (-1.26, 2.22)
E_1 = (-1.26, 0.3)
F_1 = (-3.92, 0.3)
poly2_1, a_2, d_2, e_1, f_1 = Polygon(A_1, D_1, E_1, F_1)
h = Circle(B, ω / 2)
I = Point(h)
b = Segment(B, I)
i = LineBisector(I, C)
B' = Mirror(B, i)
j = Segment(I, B')
l = Ray(C, B')
m = Ray(B, I)
q = Circle(B, 2 * ω)
r = Circle(C, 2 * ω)
J = Intersect(q, m, 1)
K = Intersect(r, l, 1)
n = Segment(B, J)
s = LineBisector(K, B)
C' = Mirror(C, s)
t = Segment(B, C')
b_1 = Segment(C', K)
c_1 = Line(C', J)
B'_1 = Mirror(B, c_1)
C'' = Mirror(C', c_1)
t' = Segment(B'_1, C'')
B'_2 = Mirror(B, c_1)
J' = Mirror(J, c_1)
n' = Segment(B'_2, J')
g = Segment(C, K)
G = Intersect(t, b_1)
H = Intersect(b_1, g)
L = Intersect(g, j)
M = Intersect(j, n)
N = Intersect(n, t)
O = Intersect(n', t')
P = Intersect(t, t')
k = Circle(N, C)
Q, R = Intersect(k, g)
loc1 = Locus(O, I)
o = false